package com.psychologyCommunity.Community.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

//因为这个bean在哪个层次都可以用 所以用Component申明
@Component
public class MailClient {
    //到后面需要记录一些日志 ，所以我们先申明一个logger --以当前的类MailClient.class来管理的
    private static final Logger logger= LoggerFactory.getLogger(MailClient.class);

    //JavaMailSender这个核心组件 也是由spring容器去管理的，我直接把它注入到当前的 bean中 就可以用了
    @Autowired
    private JavaMailSender mailSender;

    //发邮件的 发送人 和 收信人 以及标题申明都可能不同
    //
    // ---发件人可以固定 就是当前的用户
    @Value("${spring.mail.username}")
    private String from;

    //每次发邮件 你要告诉我  发邮件发给谁  标题 内容是什么
    public void mailSender(String to,String subject ,String content){
        try {
            MimeMessage mailMessage=mailSender.createMimeMessage();//创建一个模板 是空的
            //我们需要往模板里面填入内容，此时 我们需要一个帮助类 去帮助我们构建更详细的内容
            MimeMessageHelper helper=new MimeMessageHelper(mailMessage); //把刚刚的模板放进去
            helper.setFrom(from);// 告诉他发件人 此时会抛出一个异常
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content,true);
            //如果不加后面的true,就认为这个文本只是普通的文本 只是文字而已；加了这个参数之后 表示允许支持html文本的，把html转成字符串传进来它也能识别
            mailSender.send(helper.getMimeMessage());//此时就可以从helper里面从构建好的Message取到就好了
        } catch (MessagingException e) {
          logger.error("发送邮件失败,以及异常的具体信息：" + e.getMessage());
        }
    }
}
